/**
 * 生成指定位数的随机数
 * @param {*} len
 * @param {*} radix
 */
const randomNum = (len, radix) =>{
    const chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('')
    const uuid = []
    radix = radix || chars.length

    if (len) {
      // Compact form
      for (let i = 0; i < len; i++) uuid[i] = chars[0 | Math.random() * radix ]
    } else {
      // rfc4122, version 4 form
      let r

      // rfc4122 requires these characters
      uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-'
      uuid[14] = '4'

      // Fill in random data.  At i==19 set the high bits of clock sequence as
      // per rfc4122, sec. 4.1.5
      for (let i = 0; i < 36; i++) {
        if (!uuid[i]) {
          r = 0 | Math.random() * 16
          uuid[i] = chars[(i === 19) ? (r & 0x3) | 0x8 : r]
        }
      }
    }
    return uuid.join('') + new Date().getTime()
}

/**
 * 生成一个不重复的32位字符串
 * @returns {string} 32位字符串
 */
const createUniqueString = () =>{
    const timestamp = +new Date() + ''
    const randomNum = parseInt((1 + Math.random()) * 65536) + ''
    return (+(randomNum + timestamp)).toString(32)
}

/**
 * 生成最大最小数之间的随机数
 * @param {Number} min
 * @param {Number} max
 * @returns {Number}
 */
const rangeRandom =  (min,max) =>{
    return Math.floor(Math.random()*(max - min)) + min
}


/**
 * 生成指定位数不重复随机数
 * @param {Number} count
 * @param {Number} min
 * @param {Number} max
 * @returns {[Number,Number,...]}
 */
const generateNoRepeated = (count,min,max) => {
    const arr = []
    for (let i = 0; i < count; i++) {
        const num = Math.floor(Math.random()*(max - min)) + min
        if (arr.indexOf(num) === -1) {
            arr.push(num)
        } else {
            i --
        }
    }
    return arr
}
